package com.yoyo.itravel.service;

import com.yoyo.itravel.bean.SightOrder;
import com.yoyo.itravel.exceptions.SightOrderException;

import java.util.List;

/**
 * @Description 景点门票预定服务层接口
 *
 * @author HZX
 * @date 2020/5/16 19:16
 */
public interface ISightOrderService {

    /**
     * @Description 创建景点门票订单
     *
     * @param sightOrder
     * @return
     */
    boolean createSightOrder(SightOrder sightOrder) throws SightOrderException;

    /**
     * @Description 定时器时间到后修改订单状态为待点评
     *
     * @param sightOrder
     * @return boolean
     */
    boolean preCommentTimer(SightOrder sightOrder) throws SightOrderException;

    /**
     * @Description 通过订单号修改订单状态
     *
     * @param orderId
     * @param orderStatus
     * @return boolean
     */
    boolean updateOrderStatus(String orderId, Integer orderStatus) throws SightOrderException;

    /**
     * @Description 添加订单交易号
     *
     * @param out_trade_no
     * @param trade_no
     * @return boolean
     */
    boolean addTradeNoByOrderId(String out_trade_no, String trade_no) throws SightOrderException;

    /**
     * @Description 查询所有的景点订单
     *
     * @param
     * @return java.util.List<cn.hut.travel.bean.SightOrder>
     */
    List<SightOrder> findAll() throws SightOrderException;

    /**
     * @Description 通过用户id查询该用户的所有的景点订单
     *
     * @param userId
     * @return java.util.List<cn.hut.travel.bean.SightOrder>
     */
    List<SightOrder> findAllByUserId(String userId) throws SightOrderException;

    /**
     * @Description 通过用户id和订单状态查询该用户待付款的景点订单
     *
     * @param userId
     * @param orderStatus
     * @return java.util.List<cn.hut.travel.bean.SightOrder>
     */
    List<SightOrder> findByUserIdAndStatus(String userId, Integer orderStatus) throws SightOrderException;

    /**
     * @Description 通过订单id删除订单
     *
     * @param orderId
     * @return boolean
     */
    boolean deleteOrderByOrderId(String orderId) throws SightOrderException;

    /**
     * @Description 通过订单id获得订单对象
     *
     * @param orderId
     * @return cn.hut.travel.bean.SightOrder
     */
    SightOrder findByOrderId(String orderId) throws SightOrderException;
}
